|
자주 쓰이는 메소드및 API 를 정리합니다. |
[1] |
|
등록일:2008-03-12 10:41:03 (0%) 작성자: 제목:Annotation 사용하기 |
|
JDK 1.5 부터 annotation 을 사용할 수 있도록 되었습니다. annotation 은 영어 사전을 찾아보면
주석 이라도 되어있군요.
자바에서 주석은
// 의 한줄 주석과, /* */ 의 여러줄 주석 그리고 /** */ 의 java document 를 만들 수 있는 주석이 있습니다.
그러니까 이러한 주석과 번역은 주석 이라고 되더라도 annotation 은 다른것 입니다.^^
위의 것들은 comment 라고 하나요??
하여튼 먼저 annotation 의 사용법을 보면
@Annotation 이렇게 사용합니다. 앞에 @ 마크가 붙습니다.
예전에 document 주석내에서 많이 보던것과 유사하죠.
/**
@author 저자명
*/
이런식의 주석이 있었습니다.
annotation 은 프로그램 코드의 관점에서 보면 그냥 설명 입니다. 즉 코드에 수행에 영향을 미치치 않습니다.
annotation 은 프로그램의 metadata 를 기술한다고 하는데 이는 프로그램에 대한 부연설명, 덧붙이는말
이 되겠습니다. annotation 은 compiler 나 외부 툴들에게 프로그램에 대한 부가적인 설명을 제공하는데 사용됩니다.
사용예를 보겠습니다.
프로그램을 작성하고 컴파일하면 deprecated 메소드라는 경고문구가 나오는 경우가 있습니다.
이는 사용하려고 하는 메소드가 앞으로 더 이상 지원되지 않으므로 사용하지 말라는 내용입니다.
물론 이런 경고가 나오는 시점에서는 사용할 수 는 있지만 언제 없어질지 모르는 경우죠.
반드시 대체할 수 있는 메소드나 방법을 찾아보아야 겠습니다.
그럼 이제 자신이 만든 메소드가 오래되어서 새로운 버전이 만들어지고 이것을 사용하는 사람들에게
구버전은 사용하지 말도록 deprecate 메세지를 컴파일시 보이고 싶을때 어떡할까요..
이때 @Deprecated annotation을 사용하면 됩니다
/**
@deprecated 더이상 지원되지 않는 메소드 입니다.
*/
@Deprecated
public void myOldMethod() {
}
이렇게 선언을 하면 컴파일시 위의 메소드를 사용할때 경고를 보여줍니다. 주석안의 @deprecated 와 차이점을
@Deprecated 처럼 대문자로 시작한다는 것입니다.
또 다른 하나를 보겠습니다.
클래스를 상속 받아서 상위클래스의 메소드중하나를 오버라이드 하는경우 입니다.
// 상위 클래스
public class Parent {
public void parentMethod() {
}
}
// 하위 클래스
public class Child extends Parent {
public void parentmethod() {
}
}
이처럼 상위의 parentMethod 를 오버라이드할 경우 parentmethod로 소문자로 적어서 오버라이드가 되는게 아니라
새로운 메소드가 되어버리는 실수를 할 수 가 있습니다.
이럴경우 @Override annotation 을 사용할 수 있습니다.
@Override
pubilc void paranemethod() {
}
이렇게 정의를 하면 컴파일시 parentmethod 가 상위 메소드를 오버라이드 하는것이라고 컴파일러에게 알리게 됩니다.
하지만 대소문자를 잘못적었기 때문에 오버라이드가 아니므로 컴파일러가 오류를 보여주게 됩니다.
이처럼 annotation 은 컴파일러 같은 외부툴들에게 프로그램의 부가적인 정보를 알려주기 위해서 사용됩니다.
또다를 사용처는 EJB3.0 에서는 빈의 특성을 컨테이너에게 알리는데 annotation을 사용합니다.
전에는 빈의 특성을 xml 파일로 작성을 해야만 했습니다.
이렇게 미리 만들어져 있는 annotation 도 있고
사용자가 직접 annotation을 정의할 수도 있습니다.
더 자세한 것들은 다음 기회에 적도록 하겠습니다.^^
|
[본문링크] Annotation 사용하기
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2529 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|